Java Generics - 类本身的子类?
全部标签 给定有限数量的不同种类的项目,用堆叠枚举和枚举构造函数表示它们更好,还是将它们子类化更好?还是有更好的方法?为了给您一些背景信息,在我的小型RPG程序(具有讽刺意味的是它应该很简单)中,一个角色的元素栏中有不同种类的元素。项目根据其类型、用途和效果而有所不同。例如,元素栏中的一项是名为Gremlin的法术卷轴,可调整Utility属性。另一个项目可能是一把名为Mort的剑,用于战斗并造成伤害。在我的RPG代码中,我现在尝试了两种表示库存项目的方法。一种方法是子类化(例如,InventoryItem->Spell->AdjustingAttributes;InventoryItem->W
所以我想检查一个类是否可以分配给包含许多子类的父类(superclass),像这样publicclassA{publicA(){}}publicclassBextendsA{publicB(){}}publicclassCextendsB{publicC(){}}publicstaticvoidmain(){Aa=newC();booleanwhyAmIFalse=a.getClass().isAssignableFrom(B.class);}为什么返回false?显然它可以分配给B类作为Bb=(B)a没有返回错误,为什么返回false。这不是它描述自己的功能吗?是否有一个功能可以完成
Java中的以下代码,当在elipse上运行时,即使我们替换也会给出相同的输出superclasss=newsub();与,subs=newsub();请注意,我们已经覆盖了方法。输出是:changedsupermethodinsubclassnumissubclass5代码:publicclasssuperclass{intnum=2;publicstaticvoidmain(Stringstr[]){superclasss=newsub();//HERE:nothingchangesifwewrite,subs=newsub();s.supermethod();s.method()
我想我在这里遗漏了一些基本的东西。对先前提出的问题的任何解释或指示都将非常有帮助。importjava.util.Arrays;importjava.util.List;publicclassSt{publicstaticvoidbla(Object[]gaga){gaga[0]=newDate();//throwsArrayStoreExceptionSystem.out.println(gaga[0]);}publicstaticvoidbla(Listgaga){System.out.println(gaga.get(0));}publicstaticvoidmain(Strin
是CollectionObject的子类型在java?这可能是一个愚蠢的问题,但不是Object每个类的根? 最佳答案 没有。Collection是一个接口(interface),接口(interface)不能从类继承——因此它们不能从Object继承。(没有实现的接口(interface)从可以有实现的类继承是没有意义的。)但是,任何实现Collection的类显然都必须继承自Object。因此,您可以将实现Collection的对象视为继承自Object,因为最终它们将不得不这样做。这是语义上的差异,但是OO理论中的一个重要区别
好的,例如,假设我有一个名为“Vehicle”的抽象类。Vehicle类有一个名为wheels的静态变量,它没有被初始化。我想要做的是从Vehicle类扩展其他子类,如“摩托车”和“卡车”,并在这些子类中初始化车轮。代码:publicabstractclassVehicle{staticintwheels;//numberofwheelsonthevehicle}但以下不起作用:publicclassMotorcycleextendsVehicle{wheels=2;}有没有办法有效地做到这一点?编辑:感谢到目前为止所有回复的人。我知道创建实例可能是比将它们全部放在单独的类中更好的方法
我有一个接口(interface)可以确保对象可以复制自己:publicinterfaceDuplicable>{publicTduplicate();}我现在有classXimplementsDuplicable但我还有一个扩展X的类Y。这不是问题,直到我需要另一个泛型类:publicclassDoStuffWithDuplicable>我不能通过Y使用DoStuffWithDuplicable的通用版本,因为它没有实现Duplicable但是Duplicable因为它继承自X。所以我试过了publicclassDoStuffWithDuplicable>..但这意味着稍后会引入不安
Java中的所有对象都有内部锁,这些锁用于同步。这个概念可以防止对象同时被不同的线程操作,或者有助于控制特定代码块的执行。如果锁本身发生争用,会发生什么情况-即2个线程在精确的微秒请求锁。谁得到它,它是如何解决的? 最佳答案 Whatwillhappenifthelocksthemselvesgetcontendedupon-i.e.2threadsaskingforthelockattheexactmicrosecond.一个线程将获得锁,另一个线程将被阻塞,直到第一个线程释放它。(旁白:其他一些答案断言在Java中没有“同时”这
我正在尝试根据子类将对象分派(dispatch)到单独的方法。例如,考虑这两个对象classAextendsI{}classBextendsI{}和方法voiddispatch(Ii){}在dispatch()中,我想根据i的类型调用一个方法。因此,如果i实际上是类型A,则将调用handlerA(Aa)方法。如果它是类型B,将调用handlerB(Bb),依此类推......我尝试使用方法重载,但我想它不会这样工作实现此目标的最佳方法是什么?我想避免使用if/else语句...提前致谢编辑:我无法修改任何这些类。 最佳答案 使用Vi
模拟版本:1.9.0我想在mockito中设置对模拟对象方法的调用,而不调用原始方法本身:编辑:此示例实际上按预期工作,即未执行的主体方法“test()”。然而,经过进一步调查,我注意到原始方法具有默认的可见性修饰符,我怀疑这会导致问题,因为在将其更改为public后(这不应该是一样的吗?!)它按预期工作。例如publicclassTestClass{publicStringtest(){System.out.println("testcalled!");return"test";}}//intestTestClassmock=mock(TestClass.class);when(mo